# 字典的定义与基本操作

# 1、使用{}定义
vart = {'name': 'Jack', 'age': 18, 'job': 'worker'}
# print(vart, type(vart))
# {'name': 'Jack', 'age': 18, 'job': 'worker'} <class 'dict'>

# 2,使用dict(key=value, key=value)函数进行定义
vart = dict(name='Jack', age=18, sex='men')
# print(vart, type(vart))
# {'name': 'Jack', 'age': 18, 'sex': 'men'} <class 'dict'>

# 3、数据类型的转换 必须是二级列表或元组，并且二级列表或元组中只有两个元素(键名，键值)才能转换
vart = dict([['name', 'Jack'], ['age', 18]])
# print(vart)
# {'name': 'Jack', 'age': 18}

# 4、zip()压缩函数、dict转换类型
# zip()函数的第一个参数的元素作为键名，第二个参数的元素作为键值
var1 = ['1', '2', '3']
# var2 = ['4', '5', '6']
# var1 = [1, 2, 3]
var2 = [4, 5, 6]
# vart = dict(zip(var2, var1))
vart = dict(zip(var1, var2))
# print(vart)
# {'1': 4, '2': 5, '3': 6}
# print(tuple(zip(var1, var2)))
# (('1', 4), ('2', 5), ('3', 6))

# 字典的操作
# 字典没有加法，乘法操作
vart = {'name': 'Jack', 'age': 18, 'sex': 'men'}

# 获取元素
print(vart['name'])
# Jack

# 修改元素(修改键值)
vart['name'] = 'Rose'
print(vart)
# {'name': 'Rose', 'age': 18, 'sex': 'men'}

# 删除元素
del vart['sex']
print(vart)
# {'name': 'Rose', 'age': 18}

# 添加元素，新添加的键名不能与现有键名重复，如果重复则相当于修改
vart['job'] = 'worker'
print(vart)
# {'name': 'Rose', 'age': 18, 'job': 'worker'}

# 成员检测，检测一个值是否存在(只能检测键名，不能检测键值)
print('job' in vart)
# True

# 获取字典的长度(当前字典存在多少个键值对)
print(len(vart))
# 3

# 获取当前字典中的所有key(键名)
vart.keys()
# 获取当前字典中的所有键值
vart.values()
# 获取字典中的所有键值对
vart.items()

# 对字典进行遍历,获取字典的key
for i in vart:
    print(i)

# 2 遍历字典的时候可以使用items()函数获取字典中的key可value
for k, v in vart.items():
    print(k, v)

